package utils

import (
	"encoding/json"
	"io"
	"io/ioutil"
)

func JsonStr(obj interface{}) string {
	if bytes, err := json.Marshal(obj); err == nil {
		return string(bytes)
	}
	return ""
}

func JsonMap(obj io.Reader) (map[string]interface{}, error) {
	b, err := ioutil.ReadAll(obj)
	if err != nil {
		return nil, err
	}
	rel := make(map[string]interface{})
	err = json.Unmarshal(b, &rel)
	if err != nil {
		return nil, err
	}
	return rel, nil
}

func JsonStruct(obj io.Reader, res interface{}) error {
	b, err := ioutil.ReadAll(obj)
	if err != nil {
		return err
	}

	err = json.Unmarshal(b, res)
	if err != nil {
		return err
	}
	return nil
}

func JSONConvert(in, out interface{}) error {
	bytes, err := json.Marshal(in)
	if err != nil {
		return err
	}
	err = json.Unmarshal(bytes, out)
	return err
}
